import axios from 'axios'
import store from '@/store/index'
import { message } from 'ant-design-vue'
import router from '@/router/index'

const NODE_ENV = process.env.NODE_ENV
const service = axios.create({
  baseURL: NODE_ENV === 'production' ? 'http://api.ailanding.club' : 'http://api.ailanding.club',
  timeout: 60 * 1000 * 5
})

service.interceptors.request.use((config) => {
  const token = store.state.token
  if (token) {
    config.headers.auth = token
  }
  return config
}, (error) => {
  return Promise.reject(error)
})

// 添加响应拦截器
service.interceptors.response.use((response) => {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  if (response.data.errno === 1) {
    message.error(response.data.msg)
    if (response.data.msg === '用户未登录') {
      store.commit('removeUserName')
      store.commit('removeToken')
      router.push('/login')
    }
    return Promise.reject(response.data.msg)
  }
  return response.data
}, (error) => {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  // if (error.response.status === 401) {
  //   // 跳回到登录 reactRouter默认状态下 并不支持在组件之外完成路由跳转
  //   // 需要自己来实现
  //   history.push('/login')
  // }
  if (error.message.includes('timeout')) {
    message.error('请求超时，请稍后再试')
    return Promise.reject(error)
  }
  message.error('网络连接失败，请稍后再试')
  return Promise.reject(error)
})

export default service